const fs = require('fs');
const path = require('path');
const { exec } = require('child_process');
const { generateMultiVideoPageFlipCommand } = require('../src/utils/ffmpegCommands_v3');

console.log('开始测试多视频翻页效果命令生成（使用真实视频文件）...\n');

// 测试使用的视频路径
const videoPaths = [
  'E:/codes/createVideo/temp/glenworld/7/37/blue_video.mp4',
  'E:/codes/createVideo/temp/glenworld/7/37/blue_video.mp4',
  'E:/codes/createVideo/temp/glenworld/7/37/blue_video.mp4'
];

const outputPath = 'E:/codes/createVideo/temp/glenworld/7/37/v3.mp4';

// 验证视频文件是否存在
for (const videoPath of videoPaths) {
  if (!fs.existsSync(videoPath)) {
    console.error(`错误: 找不到视频文件 ${videoPath}`);
    process.exit(1);
  }
}

console.log('使用的测试视频:');
videoPaths.forEach((path, index) => {
  console.log(`  ${index + 1}. ${path}`);
});
console.log();

console.log(`输出视频路径: ${outputPath}\n`);

// 确保输出目录存在
const outputDir = path.dirname(outputPath);
if (!fs.existsSync(outputDir)) {
  fs.mkdirSync(outputDir, { recursive: true });
}

// 生成命令
console.log('生成多视频翻页效果命令...');
try {
  const command = generateMultiVideoPageFlipCommand(videoPaths, { 
    durationPerVideo: 5,
    transitionDuration: 1,
    // 如果您认为13秒不对，可以取消下面这行注释并设置您期望的总时长
    // totalDuration: 15,
    outputPath: outputPath
  });
  
  console.log('生成的FFmpeg命令:');
  console.log(command);
  console.log();
  
  // 将命令保存到文件中便于查看
  fs.writeFileSync('./temp/command_multi_video_real.txt', command, 'utf-8');
  console.log('✓ 命令生成成功\n');
  
  // 询问是否执行命令
  console.log('是否要执行该命令来生成视频? (node test-scripts/test_ffmpeg_v3_real.js run)');
  
  if (process.argv[2] === 'run') {
    console.log('正在执行FFmpeg命令...\n');
    
    // 执行命令
    const child = exec(command, (error, stdout, stderr) => {
      if (error) {
        console.error(`执行错误: ${error}`);
        return;
      }
      console.log('stdout:', stdout);
      console.log('stderr:', stderr);
    });
    
    // 监听输出
    child.stdout.on('data', (data) => {
      process.stdout.write(data);
    });
    
    child.stderr.on('data', (data) => {
      process.stderr.write(data);
    });
    
    child.on('close', (code) => {
      console.log(`\nFFmpeg 进程已退出，退出码: ${code}`);
      if (code === 0) {
        console.log('✓ 视频生成成功!');
        if (fs.existsSync(outputPath)) {
          console.log(`输出文件: ${outputPath}`);
        } else {
          console.log('⚠ 警告: 输出文件未找到');
        }
      } else {
        console.log('✗ 视频生成失败');
      }
    });
  } else {
    console.log('如需执行，请运行: node test-scripts/test_ffmpeg_v3_real.js run');
  }
} catch (error) {
  console.error('✗ 命令生成失败:', error.message);
}